/*
 * @Author: your name
 * @Date: 2020-09-12 18:52:36
 * @LastEditTime: 2020-09-12 18:52:55
 * @LastEditors: your name
 * @Description: In User Settings Edit
 * @FilePath: \project\羊绒产业园\源码\fluff-industrial-park\src\js\common\server.js
 */
var userNum = 0 // 统计人数
var chatList = []// 记录聊天内容
var WebSocketServer = require('ws').Server// 引入 ws
// 端口对应
var wss = new WebSocketServer({ port: 8080 })
// 调用broadcast广播，实现数据互通和实时更新
wss.broadcast = function (msg) {
  wss.clients.forEach(function (item) {
    item.send(msg)
  })
}
// 监听连接
wss.on('connection', function (ws) {
  userNum++
  wss.broadcast(JSON.stringify({ funName: 'userCount', users: userNum, chat: chatList })) // 建立连接成功广播一次当前在线人数
  console.log('连接人数:', userNum)
  // 接受前端发来消息
  ws.on('message', function (e) {
    var resData = JSON.parse(e) // 消息处理 字符串转为对象
    console.log('接收到来自clent的消息：' + resData.msg)
    // 每次发送信息，都会把信息存起来，然后通过广播传递出去，这样此每次进来的用户就能看到之前的数据
    chatList.push({ userId: resData.userId, content: resData.msg })
    // 每次发送都相当于广播一次消息
    wss.broadcast(JSON.stringify({ userId: resData.userId, msg: resData.msg }))
  })
  ws.on('close', function (e) {
    userNum--
    // 建立连接关闭广播一次当前在线人数
    wss.broadcast(JSON.stringify({ funName: 'userCount', users: userNum, chat: chatList }))
    console.log('Connected clients:', userNum)
    console.log('长连接已关闭')
  })
})
console.log('服务器创建成功')

